package com.chushouya.common.wx.dto;

import lombok.Data;

/**
 * 微信小程序 URL Scheme 请求参数
 * 
 * @author shouboshi
 * @date 2025-01-23
 * @see <a href="https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/url-scheme/generateScheme.html">获取加密scheme码</a>
 */
@Data
public class WxSchemeRequest {

    /**
     * 跳转到的目标小程序信息
     */
    private JumpWxa jumpWxa;

    /**
     * 生成的 scheme 码类型，到期失效：true，永久有效：false
     * 默认值：false
     */
    private Boolean isExpire;

    /**
     * 到期失效的 scheme 码的失效时间，为 Unix 时间戳（秒）
     * 生成的到期失效 scheme 码在该时间前有效
     * 最长有效期为1年。生成到期失效的 scheme 时必填
     */
    private Long expireTime;

    /**
     * 到期失效的 scheme 码失效类型
     * 0：scheme码过期失效（默认）
     * 1：一次性使用，用后失效
     */
    private Integer expireType;

    /**
     * 到期失效的 scheme 码的失效间隔天数
     * 生成的到期失效 scheme 码在该间隔时间到达前有效
     * 最长间隔天数为365天。is_expire 为 true 且 expire_time 未填写时必填
     */
    private Integer expireInterval;

    /**
     * 跳转到的目标小程序信息
     */
    @Data
    public static class JumpWxa {
        /**
         * 通过 scheme 码进入的小程序页面路径，必须是已经发布的小程序存在的页面
         * 不填默认主页
         */
        private String path;

        /**
         * 通过 scheme 码进入小程序时的 query，最大1024个字符
         * 只支持数字，大小写英文以及部分特殊字符：!#$&'()*+,/:;=?@-._~%
         */
        private String query;

        /**
         * 要打开的小程序版本
         * release：正式版
         * trial：体验版
         * develop：开发版
         * 默认值：release
         */
        private String envVersion;
    }
}
